#!/bin/bash
# *************************************
# 功能: Shell 部署 K8s的入口脚本文件
# 作者: 王树森
# 联系: wangshusen@sswang.com
# 版本: v0.1
# 日期: 2023-04-13
# *************************************

# 加载项目的配置属性信息
root_dir=$(dirname $PWD)
[ -f $root_dir/conf/config ] && source $root_dir/conf/config || exit

# 加载功能函数
source ${subfunc_dir}/${base_func_menu}
source ${subfunc_dir}/${base_func_usage}
source ${subfunc_dir}/${base_func_exec}

# 自动识别操作系统类型，设定软件部署的命令
status=$(grep -i ubuntu /etc/issue)
[ -n "${status}" ] && os_type="Ubuntu" || os_type="CentOS"

# 基础内容
array_target=(基础 内核 容器 仓库 高可用 初始化 附件 管理 退出)

# 主函数区域
main(){
  # read -p "请输入Kubernetes集群主机的操作系统类型(centos-默认|ubuntu):  " os_type
  # os_type=${os_type:-centos}
  while true
  do
    manager_menu
    read -p "请输入您要操作的选项id值: " target_id
    if [ ${#array_target[@]} -ge ${target_id} ]; then
      if [ ${array_target[$target_id-1]} == "基础" ] 
      then
        echo -e "\e[33m开始执行基础环境部署...\e[0m"
        if [ -f "${scripts_dir}/${base_env_scripts}" ]; then
          /bin/bash "${scripts_dir}/${base_env_scripts}" "${os_type}"
        else
          echo -e "\e[31m脚本 ${base_env_scripts} 文件不存在，请确认!!\e[0m"
        fi
      elif [ ${array_target[$target_id-1]} == "内核" ]
      then
        echo -e "\e[33m开始执行K8s内核参数配置...\e[0m"
        if [ -f "${scripts_dir}/${base_kernel_scripts}" ]; then
          read -p "请输入您要执行k8s内核参数调整的主机列表,只需要ip最后一位(示例: {12..20}): " num_list
          ip_list=$(create_ip_list "${target_net}" "${num_list}")
          scp_file ${ip_list} "${scripts_dir}/${base_kernel_scripts}" "/tmp/"
          for i in ${ip_list};do
            ssh "${login_user}"@"${i}" "/bin/bash /tmp/${base_kernel_scripts}"
            echo -e "\e[32mK8s ${i} 节点主机内核参数调整完毕!!!\e[0m"
          done
        else
          echo -e "\e[31m脚本 ${base_kernel_scripts} 文件不存在，请确认!!\e[0m"
        fi
      elif [ ${array_target[$target_id-1]} == "容器" ]
      then
        echo -e "\e[33m开始执行容器环境部署...\e[0m"
        echo -e "\e[33m开始执行docker软件的部署...\e[0m"
        if [ -f "${scripts_dir}/${base_docker_scripts}" ]; then
          read -p "请输入您要执行docker软件部署的主机列表,只需要ip最后一位(示例: {12..20}): " num_list
          ip_list=$(create_ip_list "${target_net}" "${num_list}")
          scp_file ${ip_list} "${scripts_dir}/${base_docker_scripts}" "/tmp/"
          for i in ${ip_list};do
            ssh "${login_user}"@"${i}" "/bin/bash /tmp/${base_docker_scripts}"
            echo -e "\e[32mK8s ${i} 节点主机docker环境部署完毕!!!\e[0m"
          done
        else
          echo -e "\e[31m脚本 ${base_docker_scripts} 文件不存在，请确认!!\e[0m"
        fi
        echo -e "\e[33m开始执行cri服务软件的部署...\e[0m"
        if [ -f "${scripts_dir}/${base_cri_docker_scripts}" ]; then
          source "${scripts_dir}/${base_cri_docker_scripts}" "${ip_list}"
        else
          echo -e "\e[31m脚本 ${base_cri_docker_scripts} 文件不存在，请确认!!\e[0m"
        fi
      elif [ ${array_target[$target_id-1]} == "仓库" ]
      then
        echo -e "\e[33m开始执行容器镜像仓库部署...\e[0m"
        if [ -f "${scripts_dir}/${base_harbor_install_scripts}" ]; then
          source "${scripts_dir}/${base_harbor_install_scripts}"
        else
          echo -e "\e[31m脚本 ${base_harbor_install_scripts} 文件不存在，请确认!!\e[0m"
        fi
      elif [ ${array_target[$target_id-1]} == "高可用" ]
      then
        echo -e "\e[33m开始执行高可用环境部署...\e[0m"
      elif [ ${array_target[$target_id-1]} == "初始化" ]
      then
        echo -e "\e[33m开始执行K8s环境初始化...\e[0m"
        /bin/bash "${scripts_dir}/${k8s_cluster_init_scripts}"
      elif [ ${array_target[$target_id-1]} == "附件" ]
      then
        echo -e "\e[33m开始执行K8s平台功能管理...\e[0m"
      elif [ ${array_target[$target_id-1]} == "管理" ]
      then
        echo -e "\e[33m开始执行K8s环境管理...\e[0m"
      elif [ ${array_target[$target_id-1]} == "退出" ]
      then
        echo -e "\e[33m开始执行退出操作...\e[0m"
  exit
      fi
    else
      Usage
    fi
  done
}

# 调用区域
main

